﻿using System;
using System.Collections.Generic;
using System.ComponentModel.Composition;
using System.Linq;
using MediaAssistant.Data;
using MediaAssistant.DAL;

namespace MediaAssistant.Management
{
    [Export]
    public class TasteKidService
    {
        [Import]
        private LibraryDataSource DataSource { get; set; }

        public void UpdateRecommendation(Movie selectedMovie)
        {
            if (selectedMovie.IsStarred == false && selectedMovie.IsInWishList==false) return;
            lock (DatabaseManager.LockObject)
            {
                var recommendedMovieTitles = DatabaseManager.Instance.GetRecommendedMovieTitles(selectedMovie.Title);
                var totalRecommendation = recommendedMovieTitles.Count();
                var moviesNotYetWatched = DatabaseManager.Instance.GetMoviesNotWatched();
                foreach (var title in recommendedMovieTitles)
                {
                    var movieTitle = title;
                    foreach (var recommendedMovie in moviesNotYetWatched.Where(m => m.Title == movieTitle))
                    {
                        DatabaseManager.Instance.UpdateRecommendation(recommendedMovie, totalRecommendation, DataSource.SelectedProfile);
                    }
                    totalRecommendation--;
                }    
            }
        }
    }
}
